package com.server.limit.annotation;


import com.server.limit.constants.LimitStrategyConstants;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @title: Limit
 * @author: gyuan
 * @description
 * @date: 2023-11-10 10:35
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface Limit {

    // 资源key
    String key() default "";

    // 限流策略
    String strategy() default LimitStrategyConstants.RATE_LIMIT;

    // 最多访问次数
    double permitsPerSecond();

    // 时间
    long timeout();

    // 时间类型
    TimeUnit timeunit() default TimeUnit.MILLISECONDS;

    // 提示信息
    String msg() default "系统繁忙,请稍后再试";

}
